package Map;

import java.util.*;
import java.util.function.BiConsumer;
import java.util.function.Consumer;

/**
 * map遍历所有value，，相对不常用
 */
public class MapDemo2 {
    public static void main(String[] args) {
        Map<String,Integer> map = new HashMap<>();
        map.put("海帆",2);
        map.put("德宇",3);
        map.put("杰宇",4);
        map.put("常旭",5);
        System.out.println(map);
        /**
         * 遍历所有key
         * set KeySet()
         * 将当前map中的所有key以一个set集合返回
         */
        Set<String> keyset = map.keySet();
        for(String keysets: keyset){
            System.out.println("这是key键："+keysets);
        }

        /**
         * 遍历每一组键值对
         * entrySet()
         * 将当前map中的每一组键值对，以一个entry实例表示，并最终以Set集合形式返回所有键值对
         */
        Set<Map.Entry<String,Integer>> entries = map.entrySet();
        for(Map.Entry<String,Integer> e: entries){
            String key = e.getKey();
            Integer value = e.getValue();
            System.out.println("这是key:"+key+"   这是value:"+value);
        }
        /**
         * 遍历所有的value
         * collection values()
         * 将当前Map中所有的value以一个集合形式返回
         */
        Collection<Integer> values = map.values();
        for(Integer value:values){
            System.out.println("values:"+value);
        }
        /**
         * 集合
         */
        Collection<String> c  = new ArrayList<>();
        c.add("1");
        c.add("2");
        c.add("21");
        c.add("24");
        for (String cs: c){
            System.out.println(cs);
        }
        /**
         * 遍历集合
         */
        //JDK8之后集合和map都提供了forEach方法基于lambda表达式遍历
        //c.forEach(s -> System.out.println(s));
        c.forEach(new Consumer<String>() {
            @Override
            public void accept(String s) {
                System.out.println(s);
            }
        });
        map.forEach((key,value)->System.out.println(key+"+"+value));

    }
}
